FLUJO DE LOS DATOS EN EL CAUCE SEGÚN EL TIPO DE INSTRUCCIÓN(II)
11
DLX: FASE DE BÚSQUEDA DE INSTRUCCIÓN (IF)
12
Memory
Access
Write
Back
Instruction
Fetch
Instr. Decode
Reg. Fetch
Execute
Addr. Calc
(Gp:) ALU
(Gp:) MUX
(Gp:) Instr.
Memory
(Gp:) Reg File
(Gp:) MUX
(Gp:) MUX
(Gp:) Data
Memory
(Gp:) MUX
(Gp:) Sign
Extend
4
Add
(Gp:) Zero?
(Gp:) PC
Rs1
Rs2
Imm
(Gp:) PC
(Gp:) Instr
(Gp:) PC
(Gp:) PC
(Gp:) PC
(Gp:) AOR
(Gp:) SVR
(Gp:) ImR
(Gp:) AIR 2
(Gp:) AIR 1
(Gp:) CR
(Gp:) ARR
(Gp:) LMDR
(Gp:) RD
(Gp:) RD
(Gp:) RD
Rd
Se busca la instrucción a la que apunta el PC en la caché de instrucciones.
Se lleva al registro de instrucción.
Se lleva el PC al latch de interfaz entre etapas.
Se incrementa el PC en 4.
Se lleva de nuevo al PC.
Salvo que una instrucción previa de transferencia de control salto requiera su modificación, el multiplexor elije en este caso la dirección objetivo del salto.
DLX: FASE DE DESCODIFICACIÓN Y LECTURA DE OPERANDOS (ID)
Se descodifica la instrucción en la 1ª mitad del ciclo. Se leen los registros en la 2ª mitad.
Dependiendo del tipo de instr. se realiza lo siguiente en la 2ª mitad del ciclo:
Registro-registro (aritméticas/lógicas)
Se leen los registros Rs1 y Rs2 del banco de registros y se llevan a los reg. de entrada a la ALU (AIR1 y AIR2).
El registro destino se lleva a RD
Referencia a memoria (load/store)
Se lee el registro base de la dirección de memoria y se lleva al reg de entrada a la alu 1 (Air 1).
Se extiende el signo al desplazamiento y se lleva al inmediate register (IMR).
Si es un store se lee el registro a almacenar en memoria y se lleva al r. de entrada a la alu 2 (AIR2).
Transferencia de control (branch)
Se extiende el signo al desplazamiento y se lleva al inmediate register (IMR).
Se lee el registro que determina la dirección base del salto y se lleva al reg de entrada a la ALU (AIR1).
13
Instr. Decode
Reg. Fetch
(Gp:) Reg File
(Gp:) Sign
Extend
Rs1
Rs2
Imm
(Gp:) PC
(Gp:) Instr
(Gp:) PC
(Gp:) ImR
(Gp:) AIR 2
(Gp:) AIR 1
(Gp:) RD
Rd
DLX: FASE DE EJECUCIÓN (EX)
La ALU ejecuta la operación sobre los datos situados en :
Los reg de entrada a la alu (Air 1y Air 2) (arit./log)
El PC y el Imr (direc. de salto relativa a PC)
El Air 1 y el Imr (direc de salto relativa a reg o direc de memoria)
Dependiendo del tipo de instr. :
Registro-registro (aritméticas/lógicas)
El reg de salida de Alu contiene el resultado de la operación sobre los registros Rs1 y Rs2, y se lleva al reg de salida de resultados (AOR).
Referencia a memoria (load/store)
El reg de salida de Alu contiene la dirección efectiva de memoria (a leer o escribir), y se lleva al reg de salida de resultados (AOR).
Si es una instr store, el contenido del Air 2 (reg a almacenar en mem) se lleva al store value reg (SVR).
Transferencia de control (branch)
El reg de salida de Alu contiene la dirección efectiva del salto, y se lleva al reg de salida de resultados (AOR).
Se determina si la condición de salto se verifica o no y se lleva al condition reg (CR).
14
Execute
Addr. Calc
(Gp:) ALU
(Gp:) MUX
(Gp:) MUX
(Gp:) Zero?
(Gp:) PC
(Gp:) PC
(Gp:) AOR
(Gp:) SVR
(Gp:) ImR
(Gp:) AIR 2
(Gp:) AIR 1
(Gp:) CR
(Gp:) RD
(Gp:) RD
DLX: FASE DE ACCESO A MEMORIA / FINAL. DE SALTO (MEM)
Se realizan operaciones sólo en el caso de instrucciones load, store y branch:
Dependiendo del tipo de instr.:
Registro-registro (aritméticas/lógicas)
El reg de salida de alu (AOR) se transfiere la alu result register (ARR).
Referencia a memoria (load/store)
Load: se lee el dato de la caché de datos (AOR contiene la dirección efectiva) y lo leído se sitúa en el load memory data reg (LMDR).
Store: se escribe en la memoria (AOR contiene la dirección efectiva) el dato contenido en el SVR en la caché de datos.
Transferencia de control (branch)
Tanto para los saltos incondicionales como para los condicionales tomados se modifica el PC de la etapa inicial IF por el contenido del registro de salida de la alu AOR.
Para los saltos condicionales no tomados, el PC no se modificará. En el mux de la etapa IF se elije el PC+4.
15
Memory
Access
(Gp:) Data
Memory
(Gp:) PC
(Gp:) PC
(Gp:) AOR
(Gp:) SVR
(Gp:) CR
(Gp:) ARR
(Gp:) LMDR
(Gp:) RD
(Gp:) RD
DLX: FASE DE ESCRITURA DEL RESULTADO (WB)
Durante esta fase el resultado de la ejecución de una instrucción registro-registro o load a memoria es almacenado en el banco de registros de la etapa ID.
Los registros se escriben en la 1ª mitad del ciclo.
Esta operación se realiza durante la 1ª mitad del ciclo.
Dependiendo del tipo de instr. :
Registro-registro (aritméticas/lógicas)
El alu result register (ARR) se escribe en el banco de registros (en el registro RD) de la etapa ID.
Referencia a memoria (load)
El dato que está en el load memory data reg (LMDR) se escribe en el banco de registros (en el registro RD) de la etapa ID.
16
Write
Back
(Gp:) MUX
(Gp:) PC
(Gp:) ARR
(Gp:) LMDR
(Gp:) RD
INFORMACIÓN DE CONTROL EN DLX
17
Memory
Access
Write
Back
Instruction
Fetch
Instr. Decode
Reg. Fetch
Execute
Addr. Calc
(Gp:) ALU
(Gp:) MUX
(Gp:) Instr.
Memory
(Gp:) Reg File
(Gp:) MUX
(Gp:) MUX
(Gp:) Data
Memory
(Gp:) MUX
(Gp:) Sign
Extend
4
Add
(Gp:) Zero?
(Gp:) PC
WB Data
Rs1
Rs2
Imm
(Gp:) PC
(Gp:) Instr
(Gp:) PC
(Gp:) PC
(Gp:) PC
(Gp:) AOR
(Gp:) SVR
(Gp:) ImR
(Gp:) AIR 2
(Gp:) AIR 1
(Gp:) CR
(Gp:) ARR
(Gp:) LMDR
(Gp:) RD
(Gp:) RD
(Gp:) RD
Rd
Descodif.
(Gp:) Op
(Gp:) Op
(Gp:) Op
CRONOGRAMA (IDEAL) DE UNA EJECUCIÓN SEGMENTADA
18
Un funcionamiento ideal de cauce originaría el cronograma anterior.
DISEÑO DEL CAUCE
Cada etapa del cauce debe ser independiente, por lo que resulta imprescindible la existencia de registros entre las etapas con objeto de mantener:
Los valores de los datos
Las señales de control, que incluyen:
Campos de la instrucción descodificada
Señales de control de los MUX
Señales de control de la ALU
Este tipo de estructura de control se denomina estacionaria en datos
La información de control se mueve internamente por el cauce a la vez que los datos que se van utilizando u obteniendo en la ejecución de la instrucción.
19
PROBLEMA DEL BANCO DE REGISTROS
En el diseño se ha separado en dos el acceso a la memoria
Existe una cache de instrucciones en la etapa IF, de donde se leen las instrucciones
Existe una cache de datos en la etapa MEM, donde se leen y escriben los datos
Esto no resulta posible con el banco de registros, ya que tiene que ser leído y escrito
El problema se origina en que la lectura se realiza en la etapa ID y la escritura en la etapa WB
Solución: separar en dos subfases los ciclos y realizar ambas operaciones en subfases diferentes
La escritura en el registro se hace en la 1ª mitad del ciclo de la etapa WB
La lectura de los registros se hace en la 2ª mitad del ciclo de la etapa ID
La primera mitad de la etapa ID se utiliza para descodificar la instrucción
20
EJEMPLO DE SOLAPAMIENTO
21
(Gp:) IF
(Gp:) ID
(Gp:) Ex
(Gp:) M
(Gp:) Wb
(Gp:) IF
(Gp:) ID
(Gp:) Ex
(Gp:) M
(Gp:) Wb
(Gp:) Banco de registros
(Gp:) Escritura: r1
(Gp:) Lectura: r1
(Gp:) ld r1, 8 (r2)
(Gp:) add r5, r1, r3
PROBLEMA DE LA CACHÉ DE DATOS
En el diseño que se ha realizado del cauce se ha separado en dos registros el acceso de datos a la memoria caché de datos.
Si la operación es de lectura de la caché de datos, en la etapa MEM, se usa el registro de direccionamiento de la memoria AOR, y se dejan los datos leídos en el LMDR.
Si la operación es de escritura, la dirección en la que se va a escribir está en el registro AOR, y el dato que se va a escribir está contenido en el SVR.
El problema se origina en que a diferencia de la caché de instrucciones donde hay un único registro de direccionamiento de memoria y un registro de datos para leer o escribir en ella, en la de datos, si sólo hubiese un registro para acceder a la caché , cuando se realiza una lectura seguida de una escritura en la caché habría un conflicto de recursos en el mismo.
22
(Gp:) Memory
Access
(Gp:) Data
Memory
(Gp:) MUX
(Gp:) PC
(Gp:) PC
(Gp:) AOR
(Gp:) SVR
(Gp:) CR
(Gp:) ARR
(Gp:) LMDR
(Gp:) RD
(Gp:) RD
EJEMPLO DE SOLAPAMIENTO EN LA CACHÉ DE DATOS
23
(Gp:) IF
(Gp:) ID
(Gp:) Ex
(Gp:) M
(Gp:) Wb
(Gp:) IF
(Gp:) ID
(Gp:) Ex
(Gp:) M
(Gp:) Wb
(Gp:) Mem. caché de datos
(Gp:) Escritura: Mem?Memory data register
(Gp:) Escritura:Rsource? Memory data register
(Gp:) ld r1, 8 (r2)
(Gp:) sd r5, 16( r3)
(Gp:) Se lee de la caché
de datos el reg r1
(Gp:) Se escribe en la caché
de datos el reg r5
(Gp:) Conflicto de recursos
Si el registro de datos de memoria es único,
se solapan el dato leído y el que se quiere escribir
SEGMENTACIÓN DE LAS INSTRUCCIONES
24
Ejecución secuencial
Ejecución segmentada
Desocupado
Descodificación
CPU CON EJECUCIÓN EN UN SOLO CICLO (SIN SEGMENTAR)
25
(Gp:) IFetch
(Gp:) I.Decode/Reg. fetch
(Gp:) Execute/Addr.
(Gp:) Memory Access
Write back
EJEMPLO: EJECUCIÓN DE UNA INSTRUCCIÓN “ADD”
26
EJEMPLO: EJECUCIÓN DE UNA INSTRUCCIÓN “LOAD”
27
EJEMPLO: EJECUCIÓN DE UNA INSTRUCCIÓN “STORE”
28
EJEMPLO: EJECUCIÓN DE UNA INSTRUCCIÓN DE “SALTO”
29
SEÑALES DE CONTROL
30
Página anterior | Volver al principio del trabajo | Página siguiente |